package com.zyw.security.shiro.web.authc;

/**
 * @author zhangyw
 * @date 2018/1/11 15:16
 */
public interface AuthService {

    /**
     * 获取用户认证信息，通过principal 去数据库或者第三方服务查询
     *
     * @param principal 访问信息
     * @return auth info
     */
    AuthInfo getAuthInfo(Object principal);

    /**
     * 获取用户，服务器端存储的 令牌 credentials
     *
     * @param principal 访问信息
     * @return credentials
     */
    String getCredentials(Object principal);

    /**
     * 验证用户的credentials
     *
     * @param principal         用户信息
     * @param targetCredentials 用户输入的凭证
     * @param sourceCredentials 服务端留存的凭证, 可为空
     * @return true right credentials
     */
    boolean validCredentials(String principal, String targetCredentials, String sourceCredentials);
}
